package com.qdxwx.data.mapper.course;


import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.course.CourseNode;
import com.qdxwx.models.course.CourseNodeDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;


/**
 * CourseNode接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
@Repository
public interface CourseNodeMapper {
    /**
     * 添加视频节点
     */
    int insert(CourseNode courseNode);

    /**
     * 修改视频节点
     */
    int update(CourseNode node);

    /**
     * 获取课程的 二级视频节点总数(只支持二级)
     */
    int countVideo(int courseId);

    /**
     * 更新课程章节的播放数量
     */
    void updatePlayCount(int nodeId);

    /**
     * 根据条件查询章节
     */
    CourseNode selectLivingNode(@Param("courseId") int courseId, @Param("beginTime")LocalDateTime beginTime);
    /**
     * 首页查询直播课程
     */
    List<CourseNodeDTO> selectCourseNearestNodeList(@Param("e") CourseNode courseNode, @Param("limit") int limit);

    List<CourseNode> selectList(@Param("e") CourseNode courseNode, @Param("page") PageRequest page);

    int count(@Param("e") CourseNode courseNode);

    List<CourseNode> selectRoots(int courseId);

    List<CourseNode> selectChildren(int parentId);

    CourseNode selectById(int nodeId);

    int deleteById(int nodeId);

    int selectDurationSum(int courseId);
}